//Abstract class shape
#ifndef _SHAPE_H_
#define _SHAPE_H_


#include "PointH.h"
#include "ScreenH.h"

class Shape
{
	
public:

	Point p;
	char m_symb;
	float m_dirX, m_dirY, m_tempDirX, m_tempDirY;
	int m_prevDirX, m_prevDirY;

	virtual void setPos(int x, int y){};

	virtual void getPos(int &x, int &y){};

	virtual void resetPos(int x, int y){};

	void setMove(float x, float y);

	void setSymbol(char c){m_symb = c;}

	char getSymbol(){return m_symb;}

	virtual bool isDirectionsResetBorders()=0; //=0

	virtual void draw(int drawingOption = 1, Screen * s = NULL)=0; //=0

	void getIntegerDirection(int &x, int &y);

	void getPrevDirection(int &x, int &y);

	void getIntegerDirectionExplicitly(int &dirX, int &dirY);

	bool isDirX(float x);

	bool isDirY(float y);

	void getOriginalDirection(float &x, float &y);

	void resetDirectionX();

	void resetDirectionY();

	virtual bool isPointIn(int x, int y){return true;}; // change to abstract after implementing in Circle
};

#endif